﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using UAXInversionesWeb.logicaNegocio;

namespace UAXInversionesWeb.operario
{
    public partial class TramitarVentaAcciones : System.Web.UI.Page
    {
        
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void tramitarVenta_Click(object sender, EventArgs e)
        {
            int idcliente = Int32.Parse(idCliente.Text);
            int numAcc = Int32.Parse(numAcciones.Text);

            // vemos si se ha especificado un valor por acción
            double valorP = 0.0;
            if (valorAccion.Text != "")
            {
                valorP = double.Parse(valorAccion.Text);
            }
            string empresa = empresaCotizante.SelectedItem.Text;

            // se ejecuta la venta
            string result = Proxy.VenderAcciones(idcliente, empresaCotizante.SelectedItem.Value, empresa, numAcc, valorP);
            if (result == "")
            {
                if (valorAccion.Text == "")
                {
                    Response.Write("<script>alert('Compra por lo mejor: " + numAcc + " acciones de " + empresa + " compradas.')</script>");
                }
                else
                {
                    Response.Write("<script>alert('Compra coste predefinido (" + valorP.ToString("N") + " € por acción): " + numAcc + " acciones de " + empresa + " en espera de ser compradas.')</script>");
                }
                idCliente.Text = "";
                valorAccion.Text = "";
                numAcciones.Text = "";
                empresaCotizante.Items.Clear();
            }
            else
            {
                Response.Write("<script>alert('ERROR: " + result + "')</script>");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            empresaCotizante.Items.Clear();
            numAcciones.Text = "";
            valorAccion.Text = "";
            buyCost.Text = " 0,00 €";
            numAcciones.Enabled = false;
            valorAccion.Enabled = false;
            tramitarVenta.Enabled = false;
            
            int idcliente = 0;
            if (Int32.TryParse(idCliente.Text, out idcliente))
            {
                CarteraCliente[] cCliente = Proxy.getCarteraCliente(idcliente);
                HttpContext.Current.Session["ventaClienteCartera"] = cCliente;
                if (cCliente.Length > 0)
                {
                    int disponible = cCliente[0].getAccionesDisponibles();
                    numAccRangeValidator.MaximumValue = disponible.ToString();
                    disp.Text = disponible.ToString();
                    buyCost.Text = cCliente[0].getValorDeCompra().ToString("N") + " €";
                    for (int x = 0; x < cCliente.Length; x++)
                    {
                        if (cCliente[x].getNumeroDeAcciones() > cCliente[x].getAccionesEnVenta())
                        {
                            empresaCotizante.Items.Add(new Telerik.Web.UI.RadComboBoxItem(cCliente[x].getEmpresaCotizante(), cCliente[x].getCodigoDeOrden()));
                        }
                    }
                    numAcciones.Enabled = true;
                    valorAccion.Enabled = true;
                    tramitarVenta.Enabled = true;
                    idCliente.Enabled = false;
                    cargarDatosButton.Enabled = false;
                }
                else
                {
                    idCliente.Text = "no encontrado!";
                    HttpContext.Current.Session["ventaClienteCartera"] = new CarteraCliente[0];
                }
            }
            else
            {
                idCliente.Text = "inválido!";
                HttpContext.Current.Session["ventaClienteCartera"] = new CarteraCliente[0];
            }
        }

        protected void empresaCotizante_SelectedIndexChanged(object o, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        {
            CarteraCliente[] cCliente = (CarteraCliente[])HttpContext.Current.Session["ventaClienteCartera"];
            for (int i = 0; i < cCliente.Length; i++)
            {
                if (cCliente[i].getCodigoDeOrden() == empresaCotizante.SelectedItem.Value)
                {
                    int disponible = cCliente[i].getAccionesDisponibles();
                    numAccRangeValidator.MaximumValue = disponible.ToString();
                    disp.Text = disponible.ToString();
                    buyCost.Text = cCliente[i].getValorDeCompra().ToString("N") + " €";
                    break;
                }
            }
        }
    }
}